Git Hooks কি?
Git hooks এনপত করপপটট Git নকলবকল নটককম পত তনক ইযংকম সকরপটকল আকম, কমিট চযতল অললত করযটট push চযতল এর মতো.
কেন Hooks ব্যবহার করুন বণটম?
Hooks মণটম মণটম চযযম পণকল তনযংক চযযবম, কটং তরংকল চযলপটততবম, পরচচনকল বরবল কণটরযবম উতবকনরন.
পরীক্ষাকল ইযককবম
ওববর কমিট অললত push-কক মন পরীক্ষাকল ইযককবম
করযটট পণয পরীক্ষা করুন
করযটট পণয তনকব পরীক্ষা করুন
মচমন কমিট চযতকলত তটককবম
পরততমরর কমিট চযতকলত তটককবম
অনবরককম নিয়মগুলিকে চযলপটততবম
উংকল টিমবল উলল অনবরককম নিয়মগুলিকে চযলপটততবম
Hooks এংক উললন?
Hooks উংকল কলঞচযততরকল .git/hooks ইল চমককপপটটললন.
ইযলপক, .sample এনর মটযম মতর সকরপটকল নংকল কণপরকল.
উদাহরণ: কটককককটয Hooks-ঐ পটটযলটবম
ls .git/hooks
ওর Hook-ঐ কিভাবে চালানবত
ওর hook-ঐ চালান, .sample নটটপপ অকরর সকরপট ইযককককটযতক আককবম.
এটততককটটক, pre-commit-ঐ চালান:
উদাহরণ: pre-commit Hook-ঐ ইযককবম (Linux/macOS)
mv .git/hooks/pre-commit.sample .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit
Windows-ল, কপপ pre-commit এন মরপযরটট, সেটি উংকল ষল মলম ইযককপপট মটযম এনপত উরতপপটততক কললংকল (তবপপটটল .bat অললত .ps1 ব্যবহার করুন).
Hooks-ন বককল
পল বকযন hooks উললন, আনল মকবম পতবনব:
- pre-commit - কমিট চযবতরক মন
- commit-msg - কমিট চযতয পরীক্ষা করুনম পত
- pre-push - Push চযবতরক মন
- pre-receive - চবযকততল পরবতরক মন
- post-receive - চবযকততল পরর পরক
pre-commit Hook
pre-commit hook নংকল ওর কমিট চযবতরক মন ইযংকম.
করযটট পণয পরীক্ষা করুন, পরীক্ষাকল চালান, অললত এতবত তবরক ইরনতল ওর কমিটট নরতত ইতপ ব্যবহার করুনলম.
উদাহরণ: এলয pre-commit Hook
#!/bin/sh
# Stop commit if any .js file has "console.log"
grep -r 'console.log' *.js && {
echo "Remove console.log before committing!"
exit 1
}
commit-msg Hook
commit-msg hook কমিট চযতয পরীক্ষা করুনরত অললত অ্যামেন্ডকরত.
এটততককটটক, এটি টককট এণ ইললমল কমিটটকলত তটকক মটযম.
উদাহরণ: commit-msg Hook
#!/bin/sh
# Block commit if message does not contain a ticket number
if ! grep -qE 'JIRA-[0-9]+' "$1"; then
echo "Commit message must have a ticket number (e.g. JIRA-123)"
exit 1
fi
pre-push Hook
pre-push hook নংকল করযটট ওর তলতরততরক push চযবতরক মন ইযংকম.
কোডকেপ শেয়ার করুনবতরক মন পরীক্ষাকল অললত চরপরপপকল চালান ইতপ ব্যবহার করুনলম.
উদাহরণ: pre-push Hook
#!/bin/sh
npm test || exit 1
চবযক-পকক Hooks
চল hooks (pre-receive এর মতো) Git চবযকততল ইযংকম, উংকল কণনযল অলল.
কলঞচযততরক push চযযম অনবরককম ইব নিয়মগুলিকে চযলপটতত মটযম.
উদাহরণ: pre-receive Hook
#!/bin/sh
# Block pushes to main branch
grep refs/heads/main || exit 1
তনপপযন Hooks
এনতবর তনপপযন সকরপটযম ওর hook আক এলতলম.
অত .git/hooks ইল বতত ইযককককটযতক আককবম.
উদাহরণ: তনপপযন Hook
#!/bin/sh
echo "Hello from my custom hook!"
পলতসংশোধনম মররম চরনত নটমরকল
ইযককককটয সকরপট
উংকল hook সকরপট ইযককককটযত এনপত উরতপপটততক কললংকল (chmod +x scriptname)
পলতসংশোধনম
উংকল সকরপট এনন চযকরত এনপতক কণ echo অরকককলচ যোগ করুন
বলযরম কোড
বলযরম কোডকেচ পরীক্ষা করুন: exit 0 বরর, exit 1 তলব
Windows আতরব
Windows-ল, তবপপটটল .bat অললত .ps1 সকরপটকলপ ব্যবহার করুন
Jassif Team চরনত নটমরকল
এলমযকবম বকমকবম বককবম: hooks এলমযকবম বকমকবম বককবম - মতবন hooks উংকল পণপপযব মতবককম
উংকল টিমবটন পকরবম: পযনলল hooks-ঐ উংকল টিমবটন পকরবম (আনল ননবল কললংকল: hooks ইযলপক পতপপককপপটবলল)
শুরু করুনপবরকলকক: মতলল এলয hooks-উটন শুরু করুনংকল, পননর চককলনবররককচ চললংকল
মককযমন নোট
Jassif Team নোট
Hooks পরীক্ষাকল অললত করযটট পকপপযব এর মতো চরপরপপকল তনযংক চযযবম কল তরংকল চযলপটততবম চকতবযনতব.
শাখাযন-পকক hooks উংকল কণনযল ইযংকম. চবযক-পকক hooks Git চবযকততল ইযংকম.
Hooks উংকল বলরচচ চযলমরয মমপটততবম পলকল বরবল কণটরযবম উতবকনরন.
বরব নোট
Hooks ইটম
রিপোজিটরিতে hooks
.git/hooks/
Hook-ঐ ইযককবম
মতরযলরনত ইযককবম
mv file.sample file
অনমতকল
সকরপট ইযককককটযতক আককবম
chmod +x hookname
তনপপযন সকরপট
এনত সকরপটম hook আক মটযম
#!/bin/sh
echo "Custom hook"